package com.utn.tp.integrador.controlador;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;

import com.utn.tp.integrador.activities.MandarEmail;
import com.utn.tp.integrador.bd.BaseDatosSingleton;
import com.utn.tp.integrador.entidades.MensajeWeb;
import com.utn.tp.integrador.entidades.Usuario;

public class ControladorAcciones {

	private Context context;

	public ControladorAcciones(Context context) {
		this.context = context.getApplicationContext();
	}

	public void llamar(String numero, String fecha, String hora, String nombre,
			int opcion) {
		Intent intent;
		intent = new Intent(Intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:" + numero));
		BaseDatosSingleton.getInstance(context).getBaseDatos()
				.insertarRegistro(fecha, hora, nombre, opcion);
		context.startActivity(intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
	}

	public void mandarSMS(String numero, String fecha, String hora,
			String nombre, int opcion) {
		Intent intent;
		intent = new Intent(Intent.ACTION_SENDTO);
		intent.setData(Uri.parse("smsto:" + numero));
		intent.putExtra("sms_body", "");
		BaseDatosSingleton.getInstance(context).getBaseDatos()
				.insertarRegistro(fecha, hora, nombre, opcion);
		context.startActivity(intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
	}

	public void crearEmail(String email, String nombre, int opcion) {
		Intent intent;
		intent = new Intent(context, MandarEmail.class);
		intent.putExtra("email", email);
		intent.putExtra("nombre", nombre);
		context.startActivity(intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
	}

	public void mandarMail(String email, String asunto, String cuerpo,
			String fecha, String hora, String nombre, int opcion) {
		Intent intent = new Intent(Intent.ACTION_SEND);
		intent.setType("message/rfc822");
		intent.putExtra(Intent.EXTRA_EMAIL, new String[] { email });
		intent.putExtra(Intent.EXTRA_SUBJECT, asunto);
		intent.putExtra(Intent.EXTRA_TEXT, cuerpo);
		context.startActivity(Intent.createChooser(intent, "Send mail...").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
		BaseDatosSingleton.getInstance(context).getBaseDatos()
				.insertarRegistro(fecha, hora, nombre, opcion);
	}

	public void mandarMensajeWeb(String destinatario, String message,
			boolean isUpdate) {
		Usuario user = BaseDatosSingleton.getInstance(context).getBaseDatos()
				.getUsuarioPropio();
		MensajeWeb mensaje = new MensajeWeb();
		mensaje.setRemitente(user.getNombreUsuario());
		mensaje.setDestinatario(destinatario);
		mensaje.setMensaje(message);
		mensaje.setTipo(MensajeWeb.TYPE_SENT);
		new MandarMensajeWebAsyncTask(mensaje, isUpdate, context,
				getHourPhone(), getDatePhone()).execute(
				user.getNombreUsuario(), user.getPassword());
	}

	public void registrarUsuario(Usuario user) {
		new RegistrarUsuarioAsyncTask(user, context).execute();
	}

	public String getHourPhone() {
		Date dt = new Date();
		SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
		String formatteHour = df.format(dt.getTime());
		return formatteHour;
	}

	private String getDatePhone() {
		Calendar cal = new GregorianCalendar();
		Date date = cal.getTime();
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		String formatteDate = df.format(date);
		return formatteDate;
	}
}
